NICE DCV Error performing TLS handshake のエラーで接続に失敗するときの原因と対応方法
NICE DCV Client から NICE DCV サーバーへリモート接続時に下記のエラーメッセージが出力され接続できませんでした。そのときの原因と対象方法を紹介します。
Unable to connect: Error performing TLS handshake: error:00000005:lib(0):func(0):DH lib
NICE DCV Client の接続画面のキャプチャ
実行環境
RHEL8.4 の AMI から起動し、NIVIDA のグラッフィクドライバー、NICE DCV サーバーをインストールした状態です。
項目 | バージョン |
---|---|
AMI ID | ami-09ed1fd8c4c00daca |
AMI Name | RHEL-8.4.0_HVM-20210825-x86_64-0-Hourly2-GP2 |
Instance Type | g5.xlarge |
OS | Red Hat Enterprise Linux 8.4 |
NVIDIA Driver | 510.47.03 |
NICE DCV | 2022.1 (r13067) |
NICE DCV Client | 2022.0 (r4131) |
調査
DCV のサービスは起動しています。
$ sudo systemctl status dcvserver ● dcvserver.service - NICE DCV server daemon Loaded: loaded (/usr/lib/systemd/system/dcvserver.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2022-07-06 00:45:04 UTC; 3min 17s ago Process: 981 ExecStartPre=/sbin/modprobe eveusb (code=exited, status=1/FAILURE) Main PID: 1021 (dcvserver) Tasks: 5 (limit: 99347) Memory: 46.4M CGroup: /system.slice/dcvserver.service ├─1021 /bin/bash /usr/bin/dcvserver -d --service └─1025 /usr/libexec/dcv/dcvserver --service 7月 06 00:45:03 ip-10-0-1-225.ap-northeast-1.compute.internal systemd[1]: Starting NICE DCV server daemon... 7月 06 00:45:04 ip-10-0-1-225.ap-northeast-1.compute.internal systemd[1]: Started NICE DCV server daemon.
仮想セッションを作成。
$ dcv create-session dcvdemo
仮想セッションが作成されたことは確認済み。
$ dcv list-sessions Session: 'dcvdemo' (owner:ec2-user type:virtual)
セキュリティグループのインバウンドは必要なポート(TCP/UDP 8443
)を許可済み。
$ aws ec2 describe-security-groups --group-ids sg-0e5ee023e794b8fa9 --query "SecurityGroups[*].IpPermissions[*]" --output table -------------------------------------- | DescribeSecurityGroups | +----------+--------------+----------+ | FromPort | IpProtocol | ToPort | +----------+--------------+----------+ | 8443 | udp | 8443 | +----------+--------------+----------+ || IpRanges || |+----------------------------------+| || CidrIp || |+----------------------------------+| || 203.0.113.1/32 || |+----------------------------------+| +----------+--------------+----------+ | FromPort | IpProtocol | ToPort | +----------+--------------+----------+ | 8443 | tcp | 8443 | +----------+--------------+----------+ || IpRanges || |+----------------------------------+| || CidrIp || |+----------------------------------+| || 203.0.113.1/32 || |+----------------------------------+|
DCV Client から接続しようとするとUnable to connect: Error performing TLS handshake
のエラーメッセージで接続できません。
原因
RHEL なので firewalld
がデフォルトで有効でした。セキュリティグループで許可していてもfirewalld
側で拒否されていました。
$ sudo systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-07-05 02:07:42 UTC; 14min ago Docs: man:firewalld(1) Main PID: 1021 (firewalld) Tasks: 2 (limit: 99347) Memory: 33.8M CGroup: /system.slice/firewalld.service └─1021 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid 7月 05 02:07:42 ip-10-0-1-225.ap-northeast-1.compute.internal systemd[1]: Starting firewalld - dynamic firewall daemon... 7月 05 02:07:42 ip-10-0-1-225.ap-northeast-1.compute.internal systemd[1]: Started firewalld - dynamic firewall daemon. 7月 05 02:07:43 ip-10-0-1-225.ap-northeast-1.compute.internal firewalld[1021]: WARNING: AllowZoneDrifting is enabled. This is >
対応
AWS で利用することもあり、EC2 のセキュリティグループでの制御に寄せたいため firewalld
は停止・無効化します。
$ sudo systemctl stop firewalld $ sudo systemctl disable firewalld $ sudo systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
接続テスト
ユーザー、パスワードを入力すると今度は接続できました。
おわりに
Amazon Linux2 を使うことが多いので完全に油断していました。SELinux も現役なのですね。
$ getenforce Enforcing